package com.auxgroup.hr.front.service.performance;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Sort;

import com.auxgroup.hr.front.dao.domain.PsCEpAppItem;
import com.auxgroup.hr.front.dao.domain.PsCEpAppItemR;
import com.auxgroup.hr.front.dao.domain.PsCEpAppRole;
import com.auxgroup.hr.front.dao.domain.PsCEpAppSec;
import com.auxgroup.hr.front.dao.domain.PsCEpAppSecR;
import com.auxgroup.hr.front.dao.domain.PsCEpDocVw;
import com.auxgroup.hr.front.dao.domain.PsCEpDocVwPrimary;
import com.auxgroup.hr.front.dao.domain.PsCEpPropsVw;

/** 
 * @author lvliuhao 
 * @version 创建时间：2018年9月10日 下午2:15:32 
 * 类说明 
 */
public interface PerformancePlanService {

	
	/**
	 * 查询人员列表
	 * @param oprid
	 * @param transNum
	 * @return
	 */
	public List<PsCEpDocVw> getepdocs(String oprid,String transNum,String queryKey,Sort sort);
	
	/**
	 * 查询计划审批
	 * @param oprid
	 * @param transNum
	 * @return
	 */
	public PsCEpDocVw getepdoc(PsCEpDocVwPrimary primary);
	
	/**
	 * 查询单人的绩效文档信息
	 * @param oprid
	 * @param transNum
	 * @return
	 */
	public PsCEpDocVw getepdoc(String emplid,String transnum,String wftype);
	
	
	/**
	 * 获取流程审批人员列表
	 * @param transNum
	 * @return
	 */
	public List<List<PsCEpAppRole>> processMap(String appraisalId,String version,String epPhase);
	
	/**
	 * 保存评估内容
	 * @param docVw
	 * @param score
	 * @param revisedScore
	 * @param comments
	 */
	public PsCEpAppRole updAppRole(PsCEpDocVw docVw,String score,String revisedScore,String comments,String emplid,String type);
	
	
	/**
	 * 获取角色
	 * @param docVw
	 * @param emplid
	 * @return
	 */
	public PsCEpAppRole getEpAppRole(PsCEpDocVw docVw,String emplid);
	
	/**
	 * 查询区段权限
	 * @param docVw
	 * @return
	 */
	public List<PsCEpAppSecR> getEpAppSecRs(PsCEpDocVw docVw);
	
	/**
	 * 查询区段
	 * @param docVw
	 * @return
	 */
	public List<PsCEpAppSec> getEpAppSecs(PsCEpDocVw docVw);
	
	/**
	 * 查询区段
	 * @param docVw
	 * @return
	 */
	public PsCEpAppSec getEpAppSec(PsCEpDocVw docVw,String sectionId);
	
	
	/**
	 * 查询区段指标权限列表
	 * @param docVw
	 * @param sectionId
	 * @return
	 */
	public List<PsCEpAppItemR> getEpAppItemRs(PsCEpDocVw docVw,BigDecimal sectionId);
	
	/**
	 * 查询区段指标权限列表
	 * @param docVw
	 * @param sectionId
	 * @return
	 */
	public PsCEpAppItemR getEpAppItemR(PsCEpDocVw docVw,BigDecimal sectionId,String catType,String itemId);
	
	
	/**
	 * 删除区段指标
	 * @param docVw
	 * @param catType
	 * @param itemId
	 */
	public void delSecItem(PsCEpDocVw docVw,String sectionId,String catType,String itemId);
	
	
	/**
	 * 保存角色评估内容
	 * @param docVw
	 * @param comments
	 * @param score
	 * @param catType
	 * @param itemId
	 * @return
	 */
	public PsCEpAppItemR saveEpAppItemR(PsCEpDocVw docVw,String comments,String score,String catType,String itemId,BigDecimal sectionId,String emplid);
	
	
	/**
	 * 获取指标
	 * @param docVw
	 * @param sectionId
	 * @param catType
	 * @param catItemId
	 * @return
	 */
	public PsCEpAppItem getEpAppItem(PsCEpDocVw docVw,BigDecimal sectionId,String catType,String catItemId);
	
	
	
	/**
	 * 保存指标项
	 * @param docVw
	 * @param item
	 * @param sectionId
	 * @param score
	 * @param comments
	 * @return
	 */
	public PsCEpAppItem saveEpAppItem(PsCEpDocVw docVw,PsCEpAppItem item,String sectionId,String score,String comments,String nowEmplid);
	
	
	/**
	 * 获取指标
	 * @param docVw
	 * @param sectionId
	 * @return
	 */
	public List<PsCEpAppItem> getEpAppItems(PsCEpDocVw docVw,BigDecimal sectionId);
	
	
	/**
	 * 查询其他的描述字段
	 * @param item
	 * @return
	 */
	public String getItemOhterDescr(PsCEpAppItem item);
	
	
	/**
	 * 根据配置获取值
	 * @param prop
	 * @param item
	 * @return
	 */
	public String getSpecilOtherDesc(PsCEpPropsVw prop,PsCEpAppItem item);
	
	/**
	 * 查询字段配置信息
	 * @param catYpe
	 * @return
	 */
	public List<PsCEpPropsVw> getItemProps(String catType);
	
	/**
	 * 获取评论分数
	 * @param evaType
	 * @param itemR
	 * @param sectionType
	 * @return
	 */
	public String getCommentScore(String evaType,PsCEpAppItemR itemR,String sectionType);
	
	/**
	 * 构建计划项明细
	 * @param props
	 * @param item
	 * @return
	 */
	public List<Map<String, Object>> buildRespItemDetail(List<PsCEpPropsVw> props,PsCEpAppItem item);
	
	/**
	 * 
	 * @param respVo
	 */
	public void buildOldAssessInfo(List<Map<String, Object>> respVos,PsCEpDocVw docVw,PsCEpAppItem item);
	
	/**
	 * 计算分数
	 * @param docid
	 * @param version
	 * @param emplid
	 * @return
	 */
	public Map<String, String> calcPoint(String docid,String version,String emplid);
	
	
	/**
	 * 计算分数
	 * @param docid
	 * @param version
	 * @param emplid
	 * @return
	 */
	public Map<String, String> changeDocStatus(String docid,String version);
}
 